#ifndef TETRIS_BOARD_HPP
#define TETRIS_BOARD_HPP

#include "constants.hpp"
#include "piece.hpp"
#include <vector>
#include <ncurses.h>


namespace Tetris {

class Board {
public:
    Board();
    void clear(); // 清空游戏板

    // 检测方块是否与板子边缘或已固定的方块发生碰撞
    bool isCollision(const Piece& piece) const;

    // 将方块固定在板子上
    void mergePiece(const Piece& piece);

    // 检查并消除满行，返回消除的行数
    int clearLines();

    // 绘制游戏板
    void draw(WINDOW* win, int offset_x, int offset_y) const;

    // 获取某个坐标点的方块类型
    BlockType getBlockAt(int x, int y) const;

private:
    // 游戏板数据，存储方块类型ID
    BlockType m_grid[BOARD_HEIGHT][BOARD_WIDTH];

    // 将一行方块下移
    void moveRowDown(int row);

};

} // namespace Tetris

#endif // TETRIS_BOARD_HPP

